Multipath transmission control protocol proxy

ABSTRACT

An edge router runs a Multipath Transmission Control Protocol (MPTCP) proxy to allow for a host that implements TCP (Transmission Control Protocol) to operate normally yet reap the benefits of an MPTCP connection. An upgrade of a TCPIP stack on the host is not necessary. The edge router demultiplexes packets received from the host over a TCP connection to an MPTCP connection and multiplexes packets sent to the host over an MPTCP connection to a TCP connection. As a result, higher throughput of packet communication can be realized, for example, for improved video support.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a reissue of U.S. Pat. No. 8,400,923 B2 issued Mar.19, 2013.

FIELD OF THE INVENTION

Embodiments of the invention relate to the field of Transmission ControlProtocol (TCP) service; and more specifically, to improving throughputof data communicated to and from a host or client running TCP.

BACKGROUND

A host is, for example, a server, laptop, or mobile phone thatcommunicates with another host or subscriber end station, such asanother server, laptop, or mobile phone. A host that runs TCP utilizes aTCP connection to send and receive packets with another host orsubscriber end station. An edge router assists the host by transmittingpackets over the TCP connection to and from the host. The edge routerdoes not terminate or initiate the TCP connection, but rather acts toensure that packets are transmitted correctly.

Multipath Transmission Control Protocol (MPTCP) is a potentialimplementation that would have various benefits over TCP. MPTCP utilizesmultiple paths for one TCP connection and therefore allows for higherthroughput in data communications. Higher traffic applications, such asvideo, could be more easily supported using MPTCP. However, MPTCP is notwidely implemented and even if it were implemented in this case, hoststhat run TCP would not be capable of taking advantage of MPTCP if theTCPIP stack on the host is not upgraded. Upgrading the TCPIP stack onevery single IP enabled host would be a challenging and time-consumingprocess, e.g., on the order of years or decades to update billions ofsuch devices. Moreover, coordinating the upgrades can add to thecomplications of this process.

SUMMARY

This invention takes advantage of an MPTCP connection without requiringthat the TCPIP stack on a host be upgraded. This is done by running anMPTCP proxy on the edge router that is coupled to the host. As a result,the host is unaware of any MPTCP utilization and runs TCP as normal. Theedge router performs the necessary conversions between TCP and MPTCP sothat packets sent from the host over a TCP connection are demultiplexedto a MPTCP connection, and likewise, packets sent to the host over anMPTCP connection are multiplexed by the edge router to a TCP connection.

A method in an edge router to facilitate communications between asubscriber end station running TCP and a second electronic device thatis one of a second edge router and server end station comprises thefollowing steps. The edge router registers an Internet Protocol (IP)address of the subscriber end station with a domain name server toindicate that the subscriber end station is MPTCP capable, wherein theedge router runs an MPTCP proxy to facilitate the subscriber end stationhaving only the appearance to the second electronic device of beingMPTCP capable but in actuality is TCP capable and not MPTCP capable. Thesecond electronic device is running at least one of MPTCP and MPTCPproxy. The edge router receives packets from the subscriber end stationdestined for the second electronic device or from the second electronicdevice destined for the subscriber end station. The edge routerdetermines that the packets are either received from the subscriber endstation over a TCP connection or from the second electronic device overan MPTCP connection. In response to determining that the packets arereceived from the subscriber end station over the TCP connection, theedge router performs the following steps. The edge router demultiplexesthe packets to convert the packets for transmission over the MPTCPconnection, whereby utilizing MPTCP for the packets rather thanmaintaining TCP increases throughput by taking advantage of higherbandwidth capabilities of MPTCP compared to TCP and transmits thepackets over the MPTCP connection to the second edge router or serverend station. In response to determining that the packets are receivedfrom the second electronic device over the MPTCP connection, the edgerouter performs the following steps. The edge router multiplexes thepackets to convert the packets for transmission over the TCP connection,whereby the edge router converting from MPTCP to TCP allows thesubscriber end station to receive packets from the MPTCP connectionwithout reconfiguring its own TCP setup and transmits the packets overthe TCP connection to the subscriber end station.

An edge router configured to utilize a MPTCP connection for a subscriberend station running TCP comprises the following modules. A registrationmodule is configured to register an Internet Protocol (IP) address ofthe subscriber end station with a domain name server to indicate thatthe subscriber end station is MPTCP capable, wherein the edge routerruns MPTCP proxy to facilitate the subscriber end station having onlythe appearance to a second electronic device running at least one ofMPTCP and MPTCP proxy of being MPTCP capable but in actuality is TCPcapable and not MPTCP capable. An input module is configured to receivepackets from the subscriber end station over a TCP connection. A packetconversion module is configured to demultiplex the packets to utilizeMPTCP, whereby utilizing MPTCP for the packets rather than maintainingTCP increases throughput by taking advantage of higher bandwidthcapabilities of MPTCP compared to TCP. An output module is configured totransmit the packets out of the edge router over an MPTCP connection tothe second electronic device, wherein the second electronic device runsone of MPTCP and MPTCP proxy and is one of a second edge router and aserver end station.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings in which likereferences indicate similar elements. It should be noted that differentreferences to “an” or “one” embodiment in this disclosure are notnecessarily to the same embodiment, and such references mean at leastone. Further, when a particular feature, structure, or characteristic isdescribed in connection with an embodiment, it is submitted that it iswithin the knowledge of one skilled in the art to effect such feature,structure, or characteristic in connection with other embodimentswhether or not explicitly described.

FIG. 1 illustrates an exemplary computer system of a client and serveraccording to one embodiment of the invention;

FIG. 2 illustrates an exemplary computer system of two hosts accordingto one embodiment of the invention;

FIG. 3 is an exemplary edge router according to one embodiment of theinvention;

FIG. 4A depicts an exemplary method of an edge router according to oneembodiment of the invention;

FIG. 4B depicts an exemplary acknowledgement method of an edge routeraccording to one embodiment of the invention; and

FIG. 5 depicts an exemplary method of an edge router according to oneembodiment of the invention.

DETAILED DESCRIPTION

In the following description, numerous specific details are set forth.However, it is understood that embodiments of the invention may bepracticed without these specific details. In other instances, well-knowncircuits, structures and techniques have not been shown in detail inorder not to obscure the understanding of this description.

References in the specification to “one embodiment,” “an embodiment,”“an example embodiment,” etc., indicate that the embodiment describedmay include a particular feature, structure, or characteristic, butevery embodiment may not necessarily include the particular feature,structure, or characteristic. Moreover, such phrases are not necessarilyreferring to the same embodiment. Further, when a particular feature,structure, or characteristic is described in connection with anembodiment, it is submitted that it is within the knowledge of oneskilled in the art to effect such feature, structure, or characteristicin connection with other embodiments whether or not explicitlydescribed.

In the following description and claims, the terms “coupled” and“connected,” along with their derivatives, may be used. It should beunderstood that these terms are not intended as synonyms for each other.“Coupled” is used to indicate that two or more elements, which may ormay not be in direct physical or electrical contact with each other,cooperate or interact with each other. “Connected” is used to indicatethe establishment of communication between two or more elements that arecoupled with each other.

The techniques shown in the figures can be implemented using code anddata stored and executed on one or more electronic devices (e.g., an endstation, a network element, etc.). Such electronic devices store andcommunicate (internally and/or with other electronic devices over anetwork) code and data using machine-readable media, such asmachine-readable storage media (e.g., magnetic disks; optical disks;random access memory; read only memory; flash memory devices;phase-change memory) and machine-readable communication media (e.g.,electrical, optical, acoustical or other form of propagated signals—suchas carrier waves, infrared signals, digital signals, etc.). In addition,such electronic devices typically include a set of one or moreprocessors coupled to one or more other components, such as one or morestorage devices, user input/output devices (e.g., a keyboard, atouchscreen, and/or a display), and network connections. The coupling ofthe set of processors and other components is typically through one ormore busses and bridges (also termed as bus controllers). The storagedevice and signals carrying the network traffic respectively representone or more machine-readable storage media and machine-readablecommunication media. Thus, the storage device of a given electronicdevice typically stores code and/or data for execution on the set of oneor more processors of that electronic device. Of course, one or moreparts of an embodiment of the invention may be implemented usingdifferent combinations of software, firmware, and/or hardware.

As used herein, a network element (e.g., a router, switch, bridge, etc.)is a piece of networking equipment, including hardware and software,that communicatively interconnects other equipment on the network (e.g.,other network elements, end stations, etc.). Some network elements are“multiple services network elements” that provide support for multiplenetworking functions (e.g., routing, bridging, switching, Layer 2aggregation, session border control, Quality of Service, and/orsubscriber management), and/or provide support for multiple applicationservices (e.g., data, voice, and video). Subscriber end stations (e.g.,servers, workstations, laptops, palm tops, mobile phones, smartphones,multimedia phones, Voice Over Internet Protocol (VOIP) phones, portablemedia players, GPS units, gaming systems, set-top boxes, etc.) accesscontent/services provided over the Internet and/or content/servicesprovided on virtual private networks (VPNs) overlaid on the Internet.The content and/or services are typically provided by one or more endstations (e.g., server end stations) belonging to a service or contentprovider or end stations participating in a peer to peer service, andmay include public webpages (free content, store fronts, searchservices, etc.), private webpages (e.g., username/password accessedwebpages providing email services, etc.), corporate networks over VPNs,etc. Typically, subscriber end stations are coupled (e.g., throughcustomer premise equipment coupled to an access network (wired orwirelessly)) to edge network elements, which are coupled (e.g., throughone or more core network elements) to other edge network elements, whichare coupled to other end stations (e.g., server end stations).

Some network elements include functionality for AAA (authentication,authorization, and accounting) protocols (e.g., RADIUS (RemoteAuthentication Dial-In User Service), Diameter, and/or TACAS+ (TerminalAccess Controller Access Control System). AAA can be provided through aclient/server model, where the AAA client is implemented on a networkelement and the AAA server can be implemented either locally on thenetwork element or on a remote end station (e.g., server end station)coupled with the network element. Authentication is the process ofidentifying and verifying a subscriber. For instance, a subscriber mightbe identified by a combination of a username and a password or through aunique key. Authorization determines what a subscriber can do afterbeing authenticated, such as gaining access to certain end stationinformation resources (e.g., through the use of access controlpolicies). Accounting is recording user activity. By way of a summaryexample, subscriber end stations may be coupled (e.g., through an accessnetwork) through an edge network element (supporting AAA processing)coupled to core network elements coupled to server end stations ofservice/content providers. AAA processing is performed to identify thesubscriber record for a subscriber. A subscriber record includes a setof attributes (e.g., subscriber name, password, authenticationinformation, access control information, rate-limiting information,policing information, etc.) used during processing of that subscriber'straffic.

Certain network elements (e.g., certain edge network elements)internally represent subscriber end stations (or sometimes customerpremise equipment (CPE) such as a residential gateway (e.g., a router,modem)) using subscriber circuits. A subscriber circuit uniquelyidentifies within the network element a subscriber session and typicallyexists for the lifetime of the session. Thus, a network elementtypically allocates a subscriber circuit when the subscriber connects tothat network element, and correspondingly de-allocates that subscribercircuit when that subscriber disconnects. Each subscriber sessionrepresents a distinguishable flow of packets communicated between thenetwork element and a subscriber end station (or sometimes CPE such as aresidential gateway or modem) using a protocol, such as thepoint-to-point protocol over another protocol (PPPoX) (e.g., where X isEthernet or Asynchronous Transfer Mode (ATM)), Ethernet, 802.1Q VirtualLAN (VLAN), Internet Protocol, ATM, etc. A subscriber session can beinitiated using a variety of mechanisms: manual provisioning a dynamichost configuration protocol (DHCP), DHCP/client-less internet protocolservice (CLIPS), Media Access Control (MAC) address tracking, etc. Forexample, the point-to-point protocol (PPP) is commonly used for DSLservices and requires installation of a PPP client that enables thesubscriber to enter a username and a password, which in turn may be usedto select a subscriber record. When DHCP is used (e.g., for cable modemservices), a username typically is not provided; but in such situationsthe MAC address of the hardware in the subscriber end station (or CPE)is provided. The use of DHCP and CLIPS on the network element capturesthe MAC addresses and uses these addresses to distinguish subscribersand access their subscriber records.

Certain network elements (e.g., certain edge network elements) use ahierarchy of circuits. The leaf nodes of the hierarchy of circuits aresubscriber circuits. The subscriber circuits have parent circuits in thehierarchy that typically represent aggregations of multiple subscribercircuits, and thus the network segments and elements used to provideaccess network connectivity of those end stations to the networkelement. These parent circuits may represent physical or logicalaggregations of subscriber circuits (e.g., a virtual local area network(VLAN), a private virtual circuit (PVC) (e.g., for Asynchronous TransferMode (ATM)), a circuit-group, a channel, a pseudo-wire, a physical portof the network element, and a link aggregation group). A circuit-groupis a virtual construct that allows various sets of circuits to begrouped together for configuration purposes, for example aggregate ratecontrol. A pseudo-wire is an emulation of a layer 2 point-to-pointconnection-oriented service. A link aggregation group is a virtualconstruct that merges multiple physical ports for purposes of bandwidthaggregation and redundancy. Thus, the parent circuits physically orlogically encapsulate the subscriber circuits.

Some network elements support the configuration of multiple contexts. Asused herein, each context includes one or more instances of a virtualnetwork element (e.g., a virtual router, a virtual bridge (which may actas a virtual switch instance in a Virtual Private LAN Service (VPLS)).Each context typically shares system resources (e.g., memory, processingcycles, etc.) with other contexts configured on the network element, yetis independently administrable. For example, in the case of multiplevirtual routers, each of the virtual routers may share system resourcesbut is separate from the other virtual routers regarding its managementdomain, AAA (authentication, authorization, and accounting) name space,IP address, and routing database(s). Multiple contexts may be employedin an edge network element to provide direct network access and/ordifferent classes of services for subscribers of service and/or contentproviders.

Within certain network elements, multiple “interfaces” may beconfigured. As used herein, each interface is a logical entity,typically configured as part of a context, which provides higher-layerprotocol and service information (e.g., Layer 3 addressing) and isindependent of physical ports and circuits (e.g., ATM PVC (permanentvirtual circuits), 802.1Q VLAN circuits, QinQ circuits, DLCI circuits,etc.). The subscriber records in the AAA server identify, in addition tothe other subscriber configuration requirements, to which context (e.g.,which of the virtual routers) the corresponding subscribers should bebound within the network element. As used herein, a binding forms anassociation between a physical entity (e.g., port, channel, etc.) or alogical entity (e.g., circuit (e.g., subscriber circuit, logical circuit(a set of one or more subscriber circuits), etc.), etc.) and a context'sinterface over which network protocols (e.g., routing protocols,bridging protocols) are configured for that context. Subscriber dataflows on the physical entity when some higher-layer protocol interfaceis configured and associated with that physical entity.

Some network elements provide support for implementing VPNs (VirtualPrivate Networks) (e.g., Layer 2 VPNs and/or Layer 3 VPNs). For example,the network element at where a provider's network and a customer'snetwork are coupled are respectively referred to as PEs (Provider Edge)and CEs (Customer Edge). In a Layer 2 VPN, forwarding typically isperformed on the CE(s) on either end of the VPN and traffic is sentacross the network (e.g., through one or more PEs coupled by othernetwork elements). Layer 2 circuits are configured between the CEs andPEs (e.g., an Ethernet port, an 802.1Q permanent virtual circuit (PVC),an on-demand 802.1Q PVC, a Frame Relay PVC, an Asynchronous TransferMode (ATM) PVC, etc.). In a Layer 3 VPN, routing typically is performedby the PEs. By way of example, an edge network element that supportsmultiple contexts may be deployed as a PE; and a context may beconfigured with a VPN protocol, and thus that context is referred as aVPN context.

Some network elements provide support for VPLS (Virtual Private LANService). For example, in a VPLS network, subscriber end stations accesscontent/services provided through the VPLS network by coupling to CEs,which are coupled through PEs coupled by other network elements. VPLSnetworks can be used for implementing triple play network applications(e.g., data applications (e.g., high-speed Internet access), videoapplications (e.g., television service such as IPTV (Internet ProtocolTelevision), VoD (Video-on-Demand) service, etc.), and voiceapplications (e.g., VoIP (Voice over Internet Protocol) service)), VPNservices, etc. VPLS is a type of layer 2 VPN that can be used formulti-point connectivity. VPLS networks also allow subscriber endstations that are coupled with CEs at separate geographical locations tocommunicate with each other across a Wide Area Network (WAN) as if theywere directly attached to each other in a Local Area Network (LAN)(referred to as an emulated LAN).

In VPLS networks, each CE typically attaches, possibly through an accessnetwork (wired and/or wireless), to a bridge module of a PE via anattachment circuit (e.g., a virtual link or connection between the CEand the PE). The bridge module of the PE attaches to an emulated LANthrough an emulated LAN interface. Each bridge module acts as a “VirtualSwitch Instance” (VSI) by maintaining a forwarding table that maps MACaddresses to pseudowires and attachment circuits. PEs forward frames(received from CEs) to destinations (e.g., other CEs, other PEs, etc.)based on the MAC destination address field included in those frames.

Network elements are commonly separated into a control plane and a dataplane (sometimes referred to as a forwarding plane or a media plane). Inthe case that the network element is a router (or is implementingrouting functionality), the control plane typically determines how data(e.g., packets) is to be routed (e.g., the next hop for the data and theoutgoing port for that data), and the data plane is in charge offorwarding that data. For example, the control plane typically includesone or more routing protocols (e.g., Border Gateway Protocol (BGP),Interior Gateway Protocol(s) (IGP) (e.g., Open Shortest Path First(OSPF), Routing Information Protocol (RIP), Intermediate System toIntermediate System (ISIS), etc.), Label Distribution Protocol (LDP),Resource Reservation Protocol (RSVP), etc.) that communicate with othernetwork elements to exchange routes and select those routes based on oneor more routing metrics.

Routes and adjacencies are stored in one or more routing structures(e.g., Routing Information Base (RIB), Label Information Base (LIB), oneor more adjacency structures, etc.) on the control plane. The controlplane programs the data plane with information (e.g.. adjacency androute information) based on the routing structure(s). For example, thecontrol plane programs the adjacency and route information into one ormore forwarding structures (e.g., Forwarding Information Base (FIB),Label Forwarding Information Base (LFIB), and one or more adjacencystructures) on the data plane. The data plane uses these forwarding andadjacency structures when forwarding traffic.

Each of the routing protocols downloads route entries to a main RIBbased on certain route metrics (the metrics can be different fordifferent routing protocols). Each of the routing protocols can storethe route entries, including the route entries which are not downloadedto the main RIB, in a local RIB (e.g., an OSPF local RIB). A RIB modulethat manages the main RIB selects routes from the routes downloaded bythe routing protocols (based on a set of metrics) and downloads thoseselected routes (sometimes referred to as active route entries) to thedata plane. The RIB module can also cause routes to be redistributedbetween routing protocols.

For layer 2 forwarding, the network element can store one or morebridging tables that are used to forward data based on the layer 2information in this data.

Typically, a network element includes a set of one or more line cards, aset of one or more control cards, and optionally a set of one or moreservice cards (sometimes referred to as resource cards). These cards arecoupled together through one or more mechanisms (e.g., a first full meshcoupling the line cards and a second full mesh coupling all of thecards). The set of line cards make up the data plane, while the set ofcontrol cards provide the control plane and exchange packets withexternal network element through the line cards. The set of servicecards can provide specialized processing (e.g., Layer 4 to Layer 7services (e.g., firewall, IPsec, IDS, P2P), VoIP Session BorderController, Mobile Wireless Gateways (GGSN, Evolved Packet System (EPS)Gateway), etc.). By way of example, a service card may be used toterminate IPsec tunnels and execute the attendant authentication andencryption algorithms.

FIG. 1 illustrates an exemplary computer system of a client and serveraccording to one embodiment of the invention. Client 105 and server 115communicate with each other via edge router 110. Edge router 110 isimplemented such that improved throughput is achieved by takingadvantage of an MPTCP connection over the Internet.

Client 105 runs TCP while server 115 runs MPTCP. Since the TCPIP stackin client 105 is not configured for MPTCP, packets sent from client 105would normally not be able to take advantage of the benefits of an MPTCPconnection over the Internet. Rather, the packets from client 105 wouldsimply be transmitted over the access network to edge router 110 andthen over a single path of the MPTCP connection; the remaining pathswould be left unused. However, edge router 110 runs an MPTCP proxy so asto facilitate communications between client 105 and server 115. Now,although client 105 is unaware of the conversion occurring in edgerouter 110, client 105 is able to take advantage of higher throughputenabled by an MPTCP connection, even though client 105 has not beenupgraded from TCP to MPTCP.

Edge router 110 manages data packets both transmitted to and from client105. In one embodiment, client 105 transmits packets over the accessnetwork to edge router 110 using a TCP connection. Because edge router110 runs an MPTCP proxy, it can process the packets from a TCPconnection to multiple paths over an MPTCP connection. Edge router 110terminates the TCP connection with client 105 and initiates an MPTCPconnection with server 115. Edge router 110 demultiplexes the packetsreceived from client 105 for transmission over an MPTCP connection. Edgerouter 110 sends the packets over the MPTCP connection, i.e., a newconnection, over the Internet and to server 115. Server 115 is runningMPTCP and therefore receives the packets without issue.

In one embodiment, server 115 transmits packets to client 105. Server115 runs MPTCP and therefore sends packets over an MPTCP connection overthe Internet to edge router 110. Edge router 110 runs an MPTCP proxy andtherefore is compatible with the MPTCP connection to server 115. Edgerouter 110 terminates the MPTCP connection and initiates a TCPconnection with client 105 (which runs TCP and not MPTCP). Edge router110 multiplexes the packets received over the MPTCP connection fortransmission over the TCP connection over the access network and toclient 105. Thus, client 105 is able to receive communicationstransmitted over an MPTCP connection even though client 105 itself runsTCP, and not MPTCP.

A TCP connection is uniquely identified by a source IP address, adestination IP address, an IP-header protocol type (TCP), a source-portand a destination-port. MPTCP connections are also uniquely identifiedin this manner. A segment within a TCP connection is uniquely identifiedwith its sequence number. The multiplexing and demultiplexing proceduresat the edge router 110 consist of maintaining a mapping from a segmenton the TCP connection into a segment on an MPTCP constituent connection.To maintain this mapping the unique identification for the TCP segment(as described above) is used. When a segment is received at the edgerouter 110 on the TCP connection it is mapped to a segment on an MPTCPconnection. When the acknowledgement message arrives for that segment onthe MPTCP connection the acknowledgement message for the correspondingsegment on the TCP connection is sent. Similarly, when a segment isreceived on a MPTCP constituent, it is mapped to a segment on the TCPconnection. When an acknowledgement message is received for that segmenton the TCP connection, the acknowledgement for the corresponding segmenton the MPTCP connection is sent.

FIG. 2 illustrates an exemplary computer system of two hosts accordingto one embodiment of the invention. In this embodiment, host 1 205communicates with host 2 220. These hosts run TCP, but can takeadvantage of an MPTCP connection over the Internet, resulting in higherthroughput for data. Edge routers 1 and 2 110, 215 that run MPTCPproxies support this capability.

Packets are transmitted between host 1 205 and edge router 1 110 over aTCP connection in an access network. Packets are also transmittedbetween host 2 220 and edge router 2 215 over a TCP connection in anaccess network. Edge routers 1 and 2 110, 215 run MPTCP proxies so thatpackets can be transmitted over an MPTCP connection over the Internet.

When host 1 205 initiates a TCP connection with edge router 1 110 andtransmits packets to edge router 1 110, edge router 1 110 terminatesthat TCP connection and demultiplexer the packets for MPTCP. Edge router1 110 sends the converted packets over an MPTCP connection over theInternet to edge router 2 215, which also runs an MPTCP proxy and istherefore compatible with MPTCP. Edge router 2 215 terminates the MPTCPconnection and initiates a new TCP connection over access network withhost 2 220. Edge router 2 215 multiplexes the packets from the MPTCPconnection for transmission over the TCP connection and sends thepackets to host 2 220. Host 2 220 runs TCP and is unaware of theconversions occurring at edge routers 1 and 2 110, 215. Likewise, thereverse occurs when host 2 220 initiates a TCP connection to sendpackets to host 1 205.

FIG. 3 is an exemplary edge router according to one embodiment of theinvention. Edge router 110 includes various modules to receive, process,and transmit data packets, including a registration module 305, an inputmodule 310, a packet conversion module 315, and an output module 320.Edge router 110 allows for packets to be transmitted over both TCP andMPTCP connections while taking advantage of multiple paths of MPTCP.

Edge router 110 is coupled to a subscriber end station that has not beenupdated to MPTCP, e.g., a client, a host, etc. and enablescommunications with the subscriber end station to fully utilize MPTCP.Registration module 305 registers an IP address of the subscriber endstation with a domain name server. This registration gives thesubscriber end station the appearance to other edge routers, servers,etc. of being MPTCP capable even though in actuality the subscriber endstation is only TCP capable and not MPTCP capable. Therefore, the otheredge routers, servers, etc. that run either MPTCP or MPTCP proxy willutilize an MPTCP connection when transmitting data packets to edgerouter 110.

Input module 310 receives packets from the subscriber end station over aTCP connection. At this time, the TCP connection is terminated at edgerouter 110 for packet conversion. Packet conversion module 315 convertsthe packets received by input module 310 and demultiplexes the packetsto utilize the higher bandwidth path capabilities of MPTCP compared toTCP. Output module 320 then transmits the converted packets out of edgerouter 110 over an MPTCP connection to another electronic device, suchas another edge router or server end station that runs either MPTCP orMPTCP proxy.

In regard to the packet conversion, when a segment is received on theTCP connection, a copy of the TCP header is stored locally and thatsegment is sent on one of the MPTCP-constituent connections. Theassociation between the TCP header of the incoming segment and the MPTCPheader of the outgoing segment is maintained at the edge router. When anacknowledgement is received on a MPTCP constituent at the edge router,the acknowledgement for the corresponding segment on the TCP connectionis sent.

Edge router 110 also facilitates communications in the reversedirection, i.e., from the MPTCP-capable electronic device to theTCP-capable subscriber end station. In this embodiment, input module 310receives packets from the edge router or server end station over anMPTCP connection. That edge router or server end station believes thatthe TCP-capable subscriber end station supports MPTCP becauseregistration module 305 had indicated as such during registration. Atthis point, the MPTCP connection is terminated at edge router 110.Packet conversion module 315 multiplexes the packets to accommodate TCPand output module 320 then transmits the packets out of edge router 110over a newly initiated TCP connection and on to the subscriber endstation.

Further, in one embodiment, packet conversion module 315 stores headerinformation from packets received by input module 310. This headerinformation is used to handle transmission of acknowledgements asconfirmation that data packets have been received. For the direction ofpackets transmitted from a TCP-capable subscriber end station to anMPTCP-capable edge router or server end station, an acknowledgement isreceived by edge router 110 from the MPTCP-capable edge router or serverend station to confirm that the packets have successfully beentransmitted. This acknowledgement is received over an MPTCP connection.Edge router 110 will route the acknowledgement over a TCP connection andtherefore looks to the header information previously stored by packetconversion module 315 to assist in the routing.

Acknowledgements are also received by edge router 110 in the reversedirection. In this case, packets are transmitted from an MPTCP-capableedge router or server end station to a TCP-capable subscriber endstation and the header information is captured by packet conversionmodule 315. Therefore, an acknowledgement is transmitted from theTCP-capable subscriber end station to edge router 110 over a TCPconnection to confirm that the packets have successfully been received.Edge router 110 cannot simply pass on the acknowledgement to theMPTCP-capable edge router or server end station because multiple pathsexist and further processing is needed to convert the acknowledgementfor transmission. Here, packet conversion module 315 looks at the headerinformation that was previously stored to parse the acknowledgement andtransmit it over the appropriate paths of the MPTCP connection and ontothe MPTCP-capable edge router or server end station.

FIG. 4A depicts an exemplary method of an edge router according to oneembodiment of the invention. The operations of this and other flowdiagrams will be described with reference to the exemplary embodimentsof the other diagrams. However, it should be understood that theoperations of the flow diagrams can be performed by embodiments of theinvention other than those discussed with reference to these otherdiagrams, and the embodiments of the invention discussed with referencethese other diagrams can perform operations different than thosediscussed with reference to the flow diagrams.

At operation 405, edge router 110 registers an IP address of the host orclient with a domain name server (DNS) to indicate an appearance thatthe host or client is MPTCP capable, even though the host or client isin reality only TCP capable. Then, at operation 410, edge router 110receives packets and stores header information from the packets. Theheader information is used for routing an acknowledgement of receipt.The packets received by edge router 110 will be received either over aTCP connection from the TCP-capable host or client or an MPTCPconnection from another device that runs MPTCP or MPTCP proxy, e.g.,another edge router, server, etc. (operation 415). For packets receivedby edge router 110 over a TCP connection, edge router 110 demultiplexesthe packets for transmission over an MPTCP connection (operation 420).The demultiplexed packets can then be transmitted over the MPTCPconnection by edge router 110 (operation 425). For packets received byedge router 110 over a MPTCP connection, edge router 110 multiplexes thepackets to accommodate TCP (operation 430). Edge router 110 thentransmits he multiplexed packets over the TCP connection to theTCP-capable host or client (operation 435).

FIG. 4B depicts an exemplary acknowledgement method of an edge routeraccording to one embodiment of the invention. The acknowledgementconfirms that packets have been received. However, the acknowledgementcannot necessarily be simply passed on over a different connectionbecause MPTCP has multiple paths that do not correspond to TCP.Therefore, conversion may be done by edge router 110.

At operation 440, edge router 110 receives acknowledgment of thepackets. If the acknowledgment is received over an MPTCP connection,then it needs to be converted to accommodate a TCP connection. If theacknowledgement is received over a TCP connection, then it needs to beparsed to correspond to the appropriate paths of MPTCP. The conversionof the acknowledgement is done based on the header informationpreviously taken in operation 410. The converted acknowledgement is thentransmitted over the appropriate paths (operation 445). This conversioninvolves the use of the mapping of a segment on the TCP connection ontoa segment on the MPTCP connection. This mapping was created when thesegment was transmitted from the TCP connection to the MPTCP connection.From that time the mapping of the segment number from one connection tothe other is maintained. When the acknowledgement is received thesegment number mapping is used to generate an acknowledgement to the TCPconnection.

FIG. 5 depicts an exemplary method of an edge router according to oneembodiment of the invention. This embodiment sets forth the connectioninitiation and termination points involving edge router 110. Rather thanpassing though a packet on the same connection, edge router 110terminates a connection and initiates a new connection.

At operation 505, edge router 110 receives packets over a connection.This connection is either a TCP connection of an MPTCP connection. Uponreceiving the packets, edge router 110 terminates the connection(operation 510). Edge router 110 then converts the packets fortransmission over a new connection (operation 515). When the packets arereceived over a TCP connection, it will be transmitted over a new MPTCPconnection and when the packets are received over an MPTCP connection,it will be transmitted over a new TCP connection. Edge router 110initiates that new connection to send the converted packets (operation520).

For example, while the flow diagrams in the figures show a particularorder of operations performed by certain embodiments of the invention,it should be understood that such order is exemplary (e.g., alternativeembodiments may perform the operations in a different order, combinecertain operations, overlap certain operations, etc.).

While the invention has been described in terms of several embodiments,those skilled in the art will recognize that the invention is notlimited to the embodiments described, can be practiced with modificationand alteration within the spirit and scope of the appended claims. Thedescription is thus to be regarded as illustrative instead of limiting.

What is claimed is:
 1. A method in a first electronic device that is anedge router to facilitate communications between a subscriber endstation running Transmission Control Protocol (TCP) and a secondelectronic device that is one of a second edge router and server endstation, the method comprising the steps of: registering an InternetProtocol (IP) address of the subscriber end station with a domain nameserver to indicate that the subscriber end station is MultipathTransmission Control Protocol (MPTCP) capable, wherein the edge routerruns an MPTCP proxy to facilitate the subscriber end station having onlythe appearance to the second electronic device of being MPTCP capablebut in actuality is TCP capable and not MPTCP capable, wherein thesecond electronic device is running at least one of MPTCP and MPTCPproxy; receiving packets from the subscriber end station destined forthe second electronic device or from the second electronic devicedestined for the subscriber end station; determining that the packetsare received from the subscriber end station over a TCP connection orfrom the second electronic device over an MPTCP connection; in responseto determining that the packets are received from the subscriber endstation over the TCP connection, performing the following steps:demultiplexing the packets to convert the packets for transmission overthe MPTCP connection, whereby utilizing MPTCP for the packets ratherthan maintaining TCP increases throughput by taking advantage of higherbandwidth capabilities of MPTCP compared to TCP; and transmitting thepackets over the MPTCP connection to the second edge router or serverend station; and in response to determining that the packets arereceived from the second electronic device over the MPTCP connection,performing the following steps: multiplexing the packets to convert thepackets for transmission over the TCP connection, whereby the edgerouter converting from MPTCP to TCP allows the subscriber end station toreceive packets from the MPTCP connection without reconfiguring its ownTCP setup; and transmitting the packets over the TCP connection to thesubscriber end station.
 2. The method of claim 1, wherein upon receivingthe packets from the subscriber end station over the TCP connection,further performing the following steps: terminating the TCP connectionat the edge router; and initiating the MPTCP connection at the edgerouter to transmit the demultiplexed packets to the second electronicdevice.
 3. The method of claim 1, wherein upon receiving the packetsfrom the second electronic device over the MPTCP connection, furtherperforming the following steps: terminating the MPTCP connection at theedge router; and initiating the TCP connection at the edge router totransmit the multiplexed packets to the subscriber end station.
 4. Themethod of claim 1, in response to determining that the packets arereceived from the second electronic device over the MPTCP connection,further performing the following steps: storing header information fromthe packets received from the second electronic device over the MPTCPconnection; receiving an acknowledgement from the subscriber end stationover the TCP connection, wherein the acknowledgement corresponds to thepackets received from the second electronic device; parsing theacknowledgement based on the header information for MPTCP; andtransmitting the parsed acknowledgement to the second electronic deviceover the MPTCP connection.
 5. The method of claim 1, in response todetermining that the packets are received from the subscriber endstation over the TCP connection, further performing the following steps:storing header information from the packets received from the subscriberend station over the TCP connection; receiving an acknowledgement fromthe second electronic device over the MPTCP connection, wherein theacknowledgement corresponds to the packets received from the subscriberend station; converting the acknowledgement based on the headerinformation for TCP; and transmitting the converted acknowledgement tothe subscriber end station over the TCP connection.
 6. The method ofclaim 1, wherein the subscriber end station is a host running TCP andunaware of an MPTCP conversion and wherein the second electronic deviceis a second edge router running MPTCP proxy for a second host runningTCP, whereby two hosts running TCP utilize MPTCP advantages includinghigher bandwidth.
 7. The method of claim 1, wherein the subscriber endstation is a host running TCP and unaware of the MPTCP conversion andwherein the second electronic device is a server running MPTCP.
 8. Anedge router configured to utilize a Multipath Transmission ControlProtocol (MPTCP) connection for a subscriber end station runningTransmission Control Protocol (TCP), the edge router being a firstelectronic device, the edge router comprising: a registration moduleconfigured to register an Internet Protocol (IP) address of thesubscriber end station with a domain name server to indicate that thesubscriber end station is MPTCP capable, wherein the edge router runsMPTCP proxy to facilitate the subscriber end station having only theappearance to a second electronic device running at least one of MPTCPand MPTCP proxy of being MPTCP capable but in actuality is TCP capableand not MPTCP capable; an input module configured to receive packetsfrom the subscriber end station over a TCP connection; a packetconversion module configured to demultiplex the packets to utilizeMPTCP, whereby utilizing MPTCP for the packets rather than maintainingTCP increases throughput by taking advantage of higher bandwidthcapabilities of MPTCP compared to TCP; and an output module configuredto transmit the packets out of the edge router over an MPTCP connectionto the second electronic device, wherein the second electronic deviceruns one of MPTCP and MPTCP proxy and is one of a second edge router anda server end station.
 9. The edge router of claim 8, wherein the inputmodule is also configured to receive another set of packets from thesecond electronic device over the MPTCP connection, the packetconversion module is also configured to multiplex the another set ofpackets to accommodate TCP, whereby by implementing MPTCP to TCPconversion of the another set of packets, the edge router allows thesubscriber end station to receive packets from the MPTCP connectionwithout reconfiguring its own TCP setup, and the output module is alsoconfigured to transmit the another set of packets out of the edge routerover the TCP connection to the subscriber end station.
 10. The edgerouter of claim 9, wherein the packet conversion module is alsoconfigured to terminate the MPTCP connection between the secondelectronic device and the edge router and initiate the TCP connectionbetween the edge router and the subscriber end station.
 11. The edgerouter of claim 9, wherein the packet conversion module is alsoconfigured to store header information from the packets received fromthe second electronic device over the MPTCP connection, the input moduleis also configured to receive an acknowledgement from the subscriber endstation over the TCP connection, wherein the acknowledgement correspondsto the packets received from the second electronic device, wherein thepacket conversion module is also configured to parse the acknowledgementbased on the header information for MPTCP, and the output module totransmit the parsed acknowledgement to the second electronic device overthe MPTCP connection.
 12. The edge router of claim 8, wherein the packetconversion module is also configured to terminate the TCP connectionbetween the subscriber end station and the edge router and initiate theMPTCP connection between the edge router and the second electronicdevice.
 13. The edge router of claim 8, wherein the packet conversionmodule is also configured to store header information from the packetsreceived from the subscriber end station over the TCP connection, theinput module is also configured to receive an acknowledgement from thesecond electronic device over the MPTCP connection, wherein theacknowledgement corresponds to the packets received from the subscriberend station, the packet conversion module is also configured to convertthe acknowledgement based on the header information for TCP, and theoutput module is also configured to transmit the convertedacknowledgement to the subscriber end station over the TCP connection.14. The edge router of claim 8, wherein the subscriber end stationrunning TCP is unaware of an MPTCP conversion and wherein the secondelectronic device is a second edge router configured to run MPTCP proxyfor a second subscriber end station running TCP, whereby two subscriberend stations running TCP utilize MPTCP advantages including higherbandwidth.
 15. The edge router of claim 8, wherein the subscriber endstation running TCP is unaware of the MPTCP conversion and wherein thesecond electronic device is a server end station configured to runMPTCP.
 16. A method in a network element to facilitate communicationsbetween a first end station running Transmission Control Protocol (TCP)and a second end station, the method comprising: registering an InternetProtocol (IP) address of the first end station with a domain name serverto indicate that the first end station is Multipath Transmission ControlProtocol (MPTCP) capable, wherein the network element runs an MPTCPproxy to facilitate the first end station having only the appearance tothe second end station of being MPTCP capable but in actuality is TCPcapable and not MPTCP capable, wherein the second end station is runningat least one of MPTCP and MPTCP proxy; receiving packets from the firstend station destined for the second end station or from the second endstation destined for the first end station; determining that the packetsare received from the first end station over a TCP connection or fromthe second end station over an MPTCP connection; in response todetermining that the packets are received from the first end stationover the TCP connection, performing the following: converting thepackets from TCP to MPTCP for transmission over the MPTCP connection,and transmitting the packets over the MPTCP connection to the second endstation; and in response to determining that the packets are receivedfrom the second end station over the MPTCP connection, performing thefollowing: converting the packets from MPTCP to TCP for transmissionover the TCP connection, and transmitting the packets over the TCPconnection to the first end station.
 17. The method of claim 16, whereinthe network element is a router, the first end station is a TCP server,and the second end station is an MPTCP client.
 18. The method of claim17, wherein the router includes an MPTCP proxy element, and wherein theMPTCP client is a subscriber terminal.
 19. The method of claim 18,wherein the MPTCP proxy element is an MPTCP proxy application running ina virtual machine.
 20. The method of claim 17, wherein the router is anedge router functioning as an MPTCP proxy.
 21. The method of claim 17,wherein the router is a core router functioning as an MPTCP proxy. 22.The method of claim 16, wherein the network element converting thepackets from TCP to MPTCP allows the first end station to send packetsto the MPTCP connection without reconfiguring its own TCP setup, andwherein the network element converting the packets from MPTCP to TCPallows the first end station to receive packets from the MPTCPconnection without reconfiguring its own TCP setup.
 23. The method ofclaim 16, wherein converting the packets from TCP to MPTCP includesdemultiplexing the packets for transmission over the MPTCP connection,and wherein converting the packets from MPTCP to TCP includesmultiplexing the packets for transmission over the TCP connection.
 24. Anetwork element configured to execute program instructions, which, uponexecution, cause the network element to facilitate communicationsbetween a first end station running Transmission Control Protocol (TCP)and a second end station by performing the following: registering anInternet Protocol (IP) address of the first end station with a domainname server to indicate that the first end station is MultipathTransmission Control Protocol (MPTCP) capable; running an MPTCP proxy tofacilitate the first end station having only the appearance to thesecond end station of being MPTCP capable but in actuality is TCPcapable and not MPTCP capable, wherein the second end station is runningat least one of MPTCP and MPTCP proxy; receiving a first set of packetsfrom the first end station destined for the second end station;determining that the first set of packets is received from the first endstation over a TCP connection; and in response to determining that thefirst set of packets is received from the first end station over the TCPconnection, performing the following: converting the packets in thefirst set of packets from TCP to MPTCP for transmission over an MPTCPconnection, and transmitting the packets in the first set of packetsover the MPTCP connection to the second end station.
 25. The networkelement of claim 24, wherein the program instructions, upon execution,cause the network element to facilitate communications between the firstend station and the second end station by further performing thefollowing: receiving a second set of packets from the second end stationdestined for the first end station; determining that the second set ofpackets is received from the second end station over the MPTCPconnection; and in response to determining that the second set ofpackets is received from the second end station over the MPTCPconnection, performing the following: converting the packets in thesecond set of packets from MPTCP to TCP for transmission over the TCPconnection, and transmitting the packets in the second set of packetsover the TCP connection to the first end station.